package com.shujia.io.eight;

import org.junit.Test;

import java.io.*;

public class ObjetStreamDemo1 {


    @Test
    public void test2() {
        // 反序列化，从磁盘或网络读取对象到内存
        try {
            ObjectInputStream ois = new ObjectInputStream(new FileInputStream("file\\obj1"));
            // 序列化和反序列化的顺序要保持一次

            /*
                之前介绍的输入流, 读取数据的时候, 如果读不到数据会返回-1
                对象流比较特殊, 读取不到数据的时候, 直接抛异常 java.io.EOFException
             */
//            System.out.println(ois.readByte());
//            System.out.println(ois.readShort());
//            System.out.println(ois.readInt());
//            System.out.println(ois.readBoolean());

            System.out.println(ois.readObject());
            System.out.println(ois.readObject());
            System.out.println(ois.readObject());
            System.out.println(ois.readObject());


        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    @Test
    public void test1() {
        // 序列化，把对象写入到磁盘或网络
        try {
            ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("file\\obj1"));
//            oos.writeByte(1);
//            oos.writeShort(2);
//            oos.writeInt(3);
//            oos.writeBoolean(true);

            oos.writeObject(1);
            oos.writeObject(2);
            oos.writeObject(3);
            oos.writeObject(true);

            // 如果使用对象流写入基本数据类型, 它是不是自动刷新的, 需要手动刷新
            // writeObject 会自动刷新
            // oos.flush();

        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}
